<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 函数就是把完成特定功能的一段代码抽象出来，使之成为程序中的一个独立实体，起个名字（函数名）。可以在同一个程序或其他程序中多次重复使用（通过函数名调用）。


    // 函数封装的流程
    // (1) 先将完成特定功能的代码写出来
    // (2) 把完成特定功能的代码 放到函数中 起一个名字
    // (3) 把可变参数(变量,数值) 改为形式参数
    // (4) 确定函数的返回值 => 返回值由用户自行决定,不设置 默认就是undefined
    // (5) 调用函数 => 函数名()



    // 关于函数的调用
    // (1) 函数在没有调用之前,都是以文本的形参存储在浏览器的内存当中 (函数名可以理解为变量名),调用时才会执行
    // (2) 每次调用函数 都会执行函数中的上下文
    // (3) 函数遇到return就结束了 后续的代码不在执行

    // 关于形式参数和实际参数
    // 形式参数:  函数在封装过程中的假设性参数(可以理解为变量) 用于接收函数在调用过程中传入的实际参数
    // 实际参数:  函数在执行过程中实际传入的值
    // 形式参数和实际参数一一对应


    // btn.onclick = function(){}


    // 计算 两个数的和?

    // (1) 先将完成特定功能的代码写出来
    // var a = 1;
    // var b = 2;
    // var c = a + b;
    // console.log(c); 


    // (2) 把完成特定功能的代码 放到函数中 起一个名字
    function add(a,b){  //形式参数(形参) => 函数在封装过程中的假设性参数(可以理解为变量) 用于接收函数在调用过程中传入的实际参数

        debugger;
        // (3) 把可变参数(变量,数值) 改为形式参数
        // 此处a和b定死的  => c定死的
        // var a = 1;
        // var b = 2;

        var c = a + b;
        // console.log(c); 

        // (4) 确定函数的返回值 => 返回值由用户自行决定,不设置 默认就是undefined
        return c; 
    }

    // console.log(add);

     // (5) 调用函数 => 函数名()
    // var result = add();  // 3
    // console.log(result); 
    // console.log(add()); 

    // String(100) => "100"
    // String(true) => "true"
    // String(null) => "null"

    // debugger;
    // var result = add(100,200);  //实际参数(实参) => 函数在执行过程中实际传入的值
    // console.log(result);;

    // console.log(add(253,365));
    
    console.log(add());

    // 封装一个函数 传入一个年份 判断是否是闰年?       true/false
    // 封装一个函数 传入一个数字(0-100) 判断成绩等级?  => A  B  C  D  E
    // 封装一个函数 传入一个数字 判断是否是水仙花数?   true/false
    // 封装一个函数 传入一个数字 判断是否是素数?       true/false 




</script>
</html>